package ig.ejb.metrica.da.util;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * The Data Transfer Object class.
 * Created 1/08/2006 05:32:48 PM
 * @author jsanchez
 */
public class ContratossimplestasaspagoDTO implements java.io.Serializable {
    
    private java.lang.Integer id;
    private java.sql.Timestamp fechaCorte;
    private java.lang.Integer forma;
    private java.lang.Double spread;
    private java.sql.Timestamp fechainicio;
    private java.sql.Timestamp fechafin;
    private java.lang.String modalidadspread;
    private java.lang.Integer nominalmodalidadspread;
    private java.lang.String modalidadpago;
    private java.lang.Integer nominalmodalidadpago;
    private java.lang.Integer nombreTasa;
    private java.lang.Integer liquidafindeperiodo;
    
    
    private boolean dirty = false; //dirty flag
    
    public ContratossimplestasaspagoDTO(){
    }
    
    public ContratossimplestasaspagoDTO(java.lang.Integer id, java.sql.Timestamp fechaCorte, java.lang.Integer forma, java.lang.Double spread, java.sql.Timestamp fechainicio, java.sql.Timestamp fechafin, java.lang.String modalidadspread, java.lang.Integer nominalmodalidadspread, java.lang.String modalidadpago, java.lang.Integer nominalmodalidadpago, java.lang.Integer nombreTasa, java.lang.Integer liquidafindeperiodo){
        this.id = id;
        this.fechaCorte = fechaCorte;
        this.forma = forma;
        this.spread = spread;
        this.fechainicio = fechainicio;
        this.fechafin = fechafin;
        this.modalidadspread = modalidadspread;
        this.nominalmodalidadspread = nominalmodalidadspread;
        this.modalidadpago = modalidadpago;
        this.nominalmodalidadpago = nominalmodalidadpago;
        this.nombreTasa = nombreTasa;
        this.liquidafindeperiodo = liquidafindeperiodo;
        
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }
    
    public java.lang.Integer getId(){ return id; }
    public void setId(java.lang.Integer id){
        this.id = id;
        setDirty();
    }
    
    public java.sql.Timestamp getFechaCorte(){ return fechaCorte; }
    public void setFechaCorte(java.sql.Timestamp fechaCorte){
        this.fechaCorte = fechaCorte;
        setDirty();
    }
    
    public java.lang.Integer getForma(){ return forma; }
    public void setForma(java.lang.Integer forma){
        this.forma = forma;
        setDirty();
    }
    
    public java.lang.Double getSpread(){ return spread; }
    public void setSpread(java.lang.Double spread){
        this.spread = spread;
        setDirty();
    }
    
    public java.sql.Timestamp getFechainicio(){ return fechainicio; }
    public void setFechainicio(java.sql.Timestamp fechainicio){
        this.fechainicio = fechainicio;
        setDirty();
    }
    
    public java.sql.Timestamp getFechafin(){ return fechafin; }
    public void setFechafin(java.sql.Timestamp fechafin){
        this.fechafin = fechafin;
        setDirty();
    }
    
    public java.lang.String getModalidadspread(){ return modalidadspread; }
    public void setModalidadspread(java.lang.String modalidadspread){
        this.modalidadspread = modalidadspread;
        setDirty();
    }
    
    public java.lang.Integer getNominalmodalidadspread(){ return nominalmodalidadspread; }
    public void setNominalmodalidadspread(java.lang.Integer nominalmodalidadspread){
        this.nominalmodalidadspread = nominalmodalidadspread;
        setDirty();
    }
    
    public java.lang.String getModalidadpago(){ return modalidadpago; }
    public void setModalidadpago(java.lang.String modalidadpago){
        this.modalidadpago = modalidadpago;
        setDirty();
    }
    
    public java.lang.Integer getNominalmodalidadpago(){ return nominalmodalidadpago; }
    public void setNominalmodalidadpago(java.lang.Integer nominalmodalidadpago){
        this.nominalmodalidadpago = nominalmodalidadpago;
        setDirty();
    }
    
    public java.lang.Integer getNombreTasa(){ return nombreTasa; }
    public void setNombreTasa(java.lang.Integer nombreTasa){
        this.nombreTasa = nombreTasa;
        setDirty();
    }
    
    public java.lang.Integer getLiquidafindeperiodo(){ return liquidafindeperiodo; }
    public void setLiquidafindeperiodo(java.lang.Integer liquidafindeperiodo){
        this.liquidafindeperiodo = liquidafindeperiodo;
        setDirty();
    }
    
    
    // populate DTO from Object
//    public void populate(Object o) {
//        Method[] methods = o.getClass().getMethods();
//        for (int i = 0; i < methods.length; i++) {
//            try{
//                String methodName = methods[i].getName();
//                if ((methodName.startsWith("get") ||
//                        methodName.startsWith("is"))
//                        && Modifier.isPublic(methods[i].getModifiers())
//                        && methods[i].getParameterTypes().length == 0
//                        && !methodName.equals("getClass")) {
//                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
//                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
//                            invoke(this, new Object[]{methods[i].invoke(o,null)});
//                }
//            }catch(IllegalAccessException ilE){
//                ilE.printStackTrace();
//            }catch(InvocationTargetException invE){
//                invE.printStackTrace();
//            }catch(NoSuchMethodException noE){
//                // Don't find setMethod for field
//            }
//        }
//    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "id: " + this.id + ", " +
                "fechaCorte: " + this.fechaCorte + ", " +
                "forma: " + this.forma + ", " +
                "spread: " + this.spread + ", " +
                "fechainicio: " + this.fechainicio + ", " +
                "fechafin: " + this.fechafin + ", " +
                "modalidadspread: " + this.modalidadspread + ", " +
                "nominalmodalidadspread: " + this.nominalmodalidadspread + ", " +
                "modalidadpago: " + this.modalidadpago + ", " +
                "nominalmodalidadpago: " + this.nominalmodalidadpago + ", " +
                "nombreTasa: " + this.nombreTasa + ", " +
                "liquidafindeperiodo: " + this.liquidafindeperiodo + "]";
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof ig.ejb.metrica.da.util.ContratossimplestasaspagoDTO)) {
            return false;
        }
        ig.ejb.metrica.da.util.ContratossimplestasaspagoDTO other = (ig.ejb.metrica.da.util.ContratossimplestasaspagoDTO) otherOb;
        return (
                
                (id==null?other.id==null:id.equals(other.id))
                &&
                (fechaCorte==null?other.fechaCorte==null:fechaCorte.equals(other.fechaCorte))
                &&
                (forma==null?other.forma==null:forma.equals(other.forma))
                &&
                (spread==null?other.spread==null:spread.equals(other.spread))
                &&
                (fechainicio==null?other.fechainicio==null:fechainicio.equals(other.fechainicio))
                &&
                (fechafin==null?other.fechafin==null:fechafin.equals(other.fechafin))
                &&
                (modalidadspread==null?other.modalidadspread==null:modalidadspread.equals(other.modalidadspread))
                &&
                (nominalmodalidadspread==null?other.nominalmodalidadspread==null:nominalmodalidadspread.equals(other.nominalmodalidadspread))
                &&
                (modalidadpago==null?other.modalidadpago==null:modalidadpago.equals(other.modalidadpago))
                &&
                (nominalmodalidadpago==null?other.nominalmodalidadpago==null:nominalmodalidadpago.equals(other.nominalmodalidadpago))
                &&
                (nombreTasa==null?other.nombreTasa==null:nombreTasa.equals(other.nombreTasa))
                &&
                (liquidafindeperiodo==null?other.liquidafindeperiodo==null:liquidafindeperiodo.equals(other.liquidafindeperiodo))
                
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (
                
                (id==null?0:id.hashCode())
                ^
                (fechaCorte==null?0:fechaCorte.hashCode())
                ^
                (forma==null?0:forma.hashCode())
                ^
                (spread==null?0:spread.hashCode())
                ^
                (fechainicio==null?0:fechainicio.hashCode())
                ^
                (fechafin==null?0:fechafin.hashCode())
                ^
                (modalidadspread==null?0:modalidadspread.hashCode())
                ^
                (nominalmodalidadspread==null?0:nominalmodalidadspread.hashCode())
                ^
                (modalidadpago==null?0:modalidadpago.hashCode())
                ^
                (nominalmodalidadpago==null?0:nominalmodalidadpago.hashCode())
                ^
                (nombreTasa==null?0:nombreTasa.hashCode())
                ^
                (liquidafindeperiodo==null?0:liquidafindeperiodo.hashCode())
                
                );
    }
    
}
